package com.guit.hrms.service;

import com.guit.hrms.dto.approval.ApprovalOfferDTO;
import com.guit.hrms.dto.approval.ApprovalPlanDTO;
import com.guit.hrms.po.utilsPO.PageBean;
import com.guit.hrms.po.Transaction;

public interface ApprovalService {
    /**
     * 获取请假记录
     *
     * @param page           当前页
     * @param pageSize       当前页面展示的数据条数
     * @param deptId         部门id
     * @param type           请假类型
     * @param approvalStatus 审批状态
     * @param revokeStatus   销假状态
     * @return 请假记录
     */
    PageBean queryLeaveRecords(Integer page, Integer pageSize, Integer deptId, Integer type, Integer approvalStatus, Integer revokeStatus, Integer extensionStatus);

//    /**
//     * 获取销假记录
//     * @param page 当前页
//     * @param pageSize 当前页面展示的数据条数
//     * @param deptId 部门id
//     * @param type 请假类型
//     * @param revokeStatus 销假状态
//     * @return 销假记录
//     */
//    PageBean queryCancelRecords(Integer page, Integer pageSize, Integer deptId, Integer type, Integer revokeStatus);

    /**
     * 审批请假
     * @param transaction 审批信息
     * @return 审批结果
     */
    Integer approvingLeave(Transaction transaction);

    /**
     * 获取招聘计划(分页)
     * @param page
     * @param pageSize
     * @param planType
     * @return
     */
    PageBean getRecruitmentPlan(Integer page, Integer pageSize, Integer planType);

    /**
     * 审批招聘计划（修改招聘计划的审批状态）
     * @param approvalPlanDTO 审批信息
     * @return 结果
     */
    Integer updateRecruitmentPlan(ApprovalPlanDTO approvalPlanDTO, String employeeId);

    /**
     * 获取发offer申请(分页)
     * @param page 当前页
     * @param pageSize 页面记录大小
     * @param status 审批状态
     * @return 发offer申请列表
     */
    PageBean getApplyOfferMsg(Integer page, Integer pageSize, Integer status);

    /**
     * 审批发offer申请
     * @param approvalOfferDTO 审批信息
     * @return 结果
     */
    Integer updateApplyOfferMsg(ApprovalOfferDTO approvalOfferDTO);

//    /**
//     * 生成账号
//     * @return 账号信息
//     */
//    CreateAccountVO createAccount();

//   /**
//    * 审批销假
//    * @param transaction 审批信息
//    * @return 结果
//    */
//   Integer approvingCancel(Transaction transaction);
}
